package com.diy.sigmund.diyorder.common.middleware.mq;

/**
 * <br>ACK (Acknowledge character）即是确认字符，在数据通信中，接收站发给发送站的一种传输类控制字符。表示发来的数据已确认接收无误。
 * <br>在TCP/IP协议中，如果接收方成功的接收到数据，那么会回复一个ACK数据。通常ACK信号有自己固定的格式,长度大小,由接收方回复给发送方
 *
 * @author snowalker
 * @version 1.0
 * @date 2019/6/11 14:45
 * @desc 消息协议常量
 */
public enum RocketMQProtocolEnum {

    /** 秒杀下单消息协议 */
    SECKILL_TEST_TOPIC("SECKILL_TEST_TOPIC", "GID_YLM_TEST", "CID_YLM_TEST", "秒杀下单消息协议"),
    FAST_PROCESSING_TOPIC("FAST_PROCESSING_TOPIC", "GID_FAST_PROCESSING", "CID_FAST_PROCESSING", "快速处理积压的消息"),
    ;
    /**
     * 消息主题
     */
    private final String topic;
    /**
     * <br>生产者组，简单来说就是多个发送同一类消息的生产者称之为一个生产者组
     * <br>rocketmq支持事务消息，在发送事务消息时，如果事务消息异常（producer挂了），broker端会来回查事务的状态，这个时候会根据group名称来查找对应的producer来执行相应的回查逻辑。相当于实现了producer的高可用
     */
    private final String producerGroup;
    /**
     * 消费者组
     */
    private final String consumerGroup;
    /**
     * 消息描述
     */
    private final String desc;

    RocketMQProtocolEnum(String topic, String producerGroup, String consumerGroup, String desc) {
        this.topic = topic;
        this.producerGroup = producerGroup;
        this.consumerGroup = consumerGroup;
        this.desc = desc;
    }

    public String getTopic() {
        return topic;
    }

    public String getProducerGroup() {
        return producerGroup;
    }

    public String getDesc() {
        return desc;
    }

    public String getConsumerGroup() {
        return consumerGroup;
    }
}
